package com.jichangxiu.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jichangxiu.framework.service.BaseService;
import com.jichangxiu.system.entity.bo.SysMenuBo;
import com.jichangxiu.system.entity.bo.SysPowerBo;
import com.jichangxiu.system.entity.dto.query.QuerySysPower;
import com.jichangxiu.system.entity.po.SysPower;
import com.jichangxiu.system.entity.vo.SysPowerVo;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * SysPowerService:
 *
 * @author JiChangXiu
 * @create 2024-06-28 13:44:36
 */
public interface SysPowerService extends BaseService<SysPower, SysPowerVo> {

    /**
     * 增加 / 修改 / 删除 系统权限列表
     *
     * @param sysMenuBo      系统菜单
     * @param sysPowerBoList 系统权限对象列表
     * @return 是否成功
     */
    public Boolean addOrDelOrEdit(SysMenuBo sysMenuBo, List<SysPowerBo> sysPowerBoList);

    /**
     * 根据主键查询系统权限
     *
     * @param id       系统权限主键
     * @param isExtend 是否扩展
     * @return 系统权限详情
     */
    public SysPowerVo info(@NotBlank(message = "主键不能为空") String id, Boolean isExtend);

    /**
     * （可分页）查询系统权限列表
     *
     * @param querySysPower 查询视图对象
     * @return （分页）系统权限列表
     */
    public Page<SysPowerVo> lists(QuerySysPower querySysPower);

    /**
     * 根据租户ID和用户ID查询系统权限列表
     *
     * @param menuIdList 菜单ID列表
     * @return 系统权限列表
     */
    public List<SysPowerVo> listsByMenuIdList(List<String> menuIdList);

}